import {PixelRatio} from 'react-native';

/**
 * 估算文本高度
 * @param {string} text - 文本内容
 * @param {number} fontSize - 字体大小（pt）
 * @param {number} containerWidth - 容器宽度（px）
 * @returns {number} 估算高度（px）
 */
export const estimateTextHeight = (text: string, fontSize: number, containerWidth: number) => {
    if (!text || containerWidth <= 0) {
        return 0;
    }

    // 转换字体大小为像素
    const fontScale = PixelRatio.getFontScale();
    const fontSizeInPx = fontSize * fontScale;

    // 估算每行可容纳的字符数
    const charsPerLine = Math.floor(containerWidth / (fontSizeInPx * 0.75)); // 平均字符宽度系数

    // 计算总行数（向上取整）
    const totalLines = Math.ceil(text.length / charsPerLine);

    // 行高通常为字体大小的 1.2-1.5 倍
    const lineHeight = fontSizeInPx * 1.25;

    return totalLines * lineHeight;
};

/**
 * 估算文本中字符的平均宽度
 * 区分中英文，中文宽度接近字体大小，英文约为字体大小的一半
 */
const estimateAverageCharWidth = (text: string, fontSize: number) => {
    // 匹配中文字符
    const chineseChars = text.match(/[\u4e00-\u9fa5]/g)?.length || 0;
    const totalChars = text.length;
    // 中文占比
    const chineseRatio = chineseChars / totalChars;

    // 中文平均宽度约为字体大小的 0.9 倍，英文约为 0.5 倍
    return (chineseRatio * fontSize * 0.9) + ((1 - chineseRatio) * fontSize * 0.5);
}
